<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>

      let arr = [3,1,2,5,4,9,7,2]
      let count = 0;
      for(let k=0;k<arr.length;k++){
        for(let i=0;i<k;i++){
          if(arr[i] === arr[k]){
            console.log(arr[k]);
          }
          ++count

        }
      }
      console.log(count);

      //       function binarySearch1(arr, target) {
      //   const length = arr.length;
      //   if (length === 0) return -1;

      //   let startIndex = 0;
      //   let endIndex = length - 1;

      //   while (startIndex <= endIndex) {
      //     const midIndex = Math.floor((startIndex + endIndex) / 2);
      //     const midValue = arr[midIndex];

      //     if (target < midValue) {
      //       // 目标值较小，则继续在左侧查找
      //       endIndex = midIndex - 1;
      //     } else if (target > midValue) {
      //       // 目标值较大，则继续在右侧查找
      //       startIndex = midIndex + 1;
      //     } else {
      //       // 相等返回
      //       return midIndex;
      //     }
      //   }

      //   return -1;
      // }

      // const arr = [10, 20, 30, 40, 50, 60];
      // const target = 40;
      // console.log(binarySearch1(arr, target));

      // // 递归
      // function binarySearch2(arr, target, startIndex, endIndex) {
      //   const length = arr.length;
      //   if (length === 0) return -1;

      //   // 开始和结束的范围

      //   if (startIndex == null) startIndex = 0;
      //   if (endIndex == null) endIndex = length - 1;

      //   // 如果start 和end 相遇，则结束
      //   if (startIndex > endIndex) return -1;

      //   // 中间位置
      //   const midIndex = Math.floor((startIndex + endIndex) / 2);
      //   const midValue = arr[midIndex];

      //   if (target < midValue) {
      //     // 目标值较小，则继续在左侧查找
      //     return binarySearch2(arr, target, startIndex, midIndex - 1);
      //   } else if (target > midValue) {
      //     // 目标值较大，则继续在右侧查找
      //     return binarySearch2(arr, target, midIndex + 1, endIndex);
      //   } else {
      //     // 相等返回
      //     return midIndex;
      //   }
      // }

      // const arr2 = [10, 20, 30, 40, 50, 60];
      // const target2 = 40;
      // console.log(binarySearch2(arr2, target2));


      // // 性能测试
      // console.time('search1')
      // for(let k = 0; k< 30000; k++){
      //   binarySearch1(arr, target);
      // }
      // console.timeEnd('search1')

      // console.time('search2')
      // for(let k = 0; k< 30000; k++){
      //   binarySearch2(arr, target);
      // }
      // console.timeEnd('search2')

      // console.time('search3')
      // for(let k = 0; k< 30000; k++){
      //   arr.includes(target)
      // }
      // console.timeEnd('search3')

      // console.time('search4')
      // for(let k = 0; k< 30000; k++){
      //   arr.findIndex((item) => item === target)
      // }
      // console.timeEnd('search4')
    </script>
  </body>
</html>
